(function () {
    "use strict";

    angular.module('core').factory('entradaService', factory);
    factory.$inject = ['$http', '$q'];

    function factory($http, $q) {

        return {
            get: function (id) {
                var deferred = $q.defer();
                $http.post('/entrada/get', id)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            fillChaveAcesso: function (item) {
                var deferred = $q.defer();
                $http.post('/entrada/fillChaveAcesso', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            getAll: function (args) {
                var deferred = $q.defer();
                $http.post('/entrada/getall', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            count: function (args) {
                var deferred = $q.defer();
                $http.post('/entrada/count', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            prepareNew: function () {
                var deferred = $q.defer();
                $http.post('/entrada/prepareNew')
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewItem: function (args) {
                var deferred = $q.defer();
                $http.post('/entrada/PrepareNewItem',args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepare: function (args) {
                var deferred = $q.defer();
                $http.post('/entrada/Prepare', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            save: function (item) {
                var deferred = $q.defer();
                $http.post('/entrada/save', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            delete: function (id) {
                var deferred = $q.defer();
                $http.post('/entrada/delete', id)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            cancel: function (args) {
                var deferred = $q.defer();
                $http.post('/entrada/cancel', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            setConferida: function (args) {
                var deferred = $q.defer();
                $http.post('/entrada/setConferida', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            generateRomaneio: function (args) {

                var deferred = $q.defer();
                $http.post('/entrada/generateRomaneio', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            generateFinanceiro: function (args) {

                var deferred = $q.defer();
                $http.post('/entrada/generateFinanceiro', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            generateNotaFiscal: function (args) {

                var deferred = $q.defer();
                $http.post('/entrada/generateNotaFiscal', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            emiteEntradaPorXml: function (nota, entrada, index)
            {
                var deferred = $q.defer();
                var args = { nota: nota, entrada: entrada, index: index };
                $http.post('/entrada/EmiteEntradaPorXml', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            checkXml: function (chave) {
                var deferred = $q.defer();
                var args = { chave: chave };
                $http.post('/entrada/GetXmlByChave', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;

            },
            prepareXml: function (xml) {
                var deferred = $q.defer();
                $http.post('/entrada/PrepareXml', xml)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            }
        };
    }

})();


